<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <select class="province">
        <option value="">请选择省份</option>
        <!-- <option value="A001">北京</option>
        <option value="A002">上海</option>
        <option value="A003">湖北</option>
        <option value="A004">湖南</option> -->
    </select>
    <select class="city" name="" id="">
        <option value="">请选择市/区</option>
        <!-- <option value="A001">朝阳</option>
        <option value="A002">海淀</option>
        <option value="A003">沙河</option>
        <option value="A004">上地</option> -->
    </select>
</body>
<script>
    // 1. 请求数据 pro.json  -> {list:[{},{},{},{}]} 找到省份列表-> 动态生成到省份下拉框
    // 2. 省份下拉框切换时 对应省份编号 ->从省份列表中 找到当前省份数据 -> 找到第二级(市/区) ->  生成到市/区下拉框
    // 3. 市区下拉框切换时 对应市区编号 -> 从市区列表中 找到当前市/区数据 -> 生成到第三级(县) 生成到(县)下拉框  (三级联动)  注意: 数据中只有省份有三级, 直辖市和自治区没有

    // 注意:
    // 下拉框取值 -> value(被选中的option中的值)
    // 获取和设置下拉框的html结构 ->  innerHTML

    var proSel = document.getElementsByClassName("province")[0];
    var citySel = document.getElementsByClassName("city")[0];

    var xhr = new XMLHttpRequest();
    xhr.open("get", "../data/pro.json", true);

    xhr.send();

    xhr.onreadystatechange = function () {

        if (xhr.readyState == 4 && xhr.status == 200) {
            var result = xhr.responseText;
            // console.log(result);
            var data = JSON.parse(result);
            console.log(data);

            var { list: proList } = data;

            var html = `<option value="">请选择省份</option>`;

            /*  proList.forEach((pro) => {
                 console.log(pro);
                 var { city_id, city_name } = pro;
                 html += `<option value="${city_id}">${city_name}</option>`;
             }) */

            // 函数的参数结构: 如果已经确定函数的参数为数组或对象 -> 可以对该参数进行解构
            // proList.forEach(({ city_id, city_name } = pro) => {
            //     // console.log(pro);
            //     // var { city_id, city_name } = pro;
            //     html += `<option value="${city_id}">${city_name}</option>`;
            // })

            // proList.forEach(({ city_id, city_name }) => {
            //     // console.log(pro);
            //     // var { city_id, city_name } = pro;
            //     html += `<option value="${city_id}">${city_name}</option>`;
            // })

            proList.forEach(({ city_id, city_name }) => html += `<option value="${city_id}">${city_name}</option>`);

            proSel.innerHTML = html;

            // 等数据请求成功 -> 页面动态生成以后 ->  再绑定事件

            proSel.onchange = function () {
                var cityId = this.value;
                console.log(cityId);
                if (cityId) {  //选择了省份 直辖市 自治区  -> cityId
                    // 对应cityId  从省份集合中找到  当前省份的数据
                    console.log(proList);

                    // find() 找到数组中满足条件的第一个元素
                    // var thisPro = proList.find((pro) => {
                    //     var { city_id } = pro;
                    //     return city_id === cityId;
                    // })
                    // var thisPro = proList.find(({ city_id } = pro) => {
                    //     return city_id === cityId;
                    // })
                    // var thisPro = proList.find(({ city_id }) => {
                    //     return city_id === cityId;
                    // })
                    var thisPro = proList.find(({ city_id }) => city_id === cityId);
                    console.log(thisPro);

                    var { list: cityList } = thisPro;

                    var html = `<option value="">请选择市/区</option>`;
                    cityList.forEach(({ city_id, city_name }) => html += `<option value="${city_id}">${city_name}</option>`);

                    citySel.innerHTML = html;


                } else { // 没有选择省份
                    citySel.innerHTML = `<option value="">请选择市/区</option>`
                }
            }

        }
    }



</script>

</html>